<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // js的最大特点是单线程，也就是同一时间，只能做一件事，这是因为js脚本语言诞生的使命所致
        // js是为处理页面中用户的交互，以及操作DOM而诞生的。
        // 单线程：如果执行时间过长，这样就会造成页面的渲染不连贯，导致页面渲染加载阻塞
        // 为了解决这个问题，HTML5提出了web Worker 标准，允许js多线程，出现了同步和异步
        // 同步：程序的执行顺序和任务排列是一致的，同步的。
        // 异步：在做一件事的同时可以处理其他事，异步的。
        // 本质区别：这条流水线上各个流程的执行顺序不同 

        // 同步任务：同步在主线程执行，形成一个执行线

        // 异步任务：通过回调函数实现
        // 1.普通事件：如click，resize
        // 2.资源加载，如load,error
        // 3.定时器，包括setInterval,setTimeout

        // js中的执行机制
        // 1.先执行栈中的同步任务
        // 2.异步任务（回调函数）放入任务队列中
        // 3.一旦执行栈中的所有同步任务执行完毕，系统就会按次序读取队列中的异步任务，于是被读取的异步任务结束等待状态，进入执行栈，开始执行。
        // 遇到多个异步任务
        // 利用异步进程处理
        // 由于主线程不断地重复获取任务，执行任务，在获取任务，在执行，所以这种机制被称为事件循环(event loop)
    </script>

</body>

</html>